& > StBoxLayout { spacing: $base_padding; }
+ /* Move padding into the box; this is to allow menu arrows
+ to extend to the border */
+ &.button { padding: 0; }
+ & > StBoxLayout { padding: 0 2 * $base_padding; }
+
.quick-toggle-label { font-weight: bold; }
- .quick-toggle-icon { icon-size: $base_icon_size; }
+ .quick-toggle-icon, .quick-toggle-arrow { icon-size: $base_icon_size; }
+}
+
+.quick-menu-toggle {
+ &:ltr > StBoxLayout { padding-right: 0; }
+ &:rtl > StBoxLayout { padding-left: 0; }
+
+ & .quick-toggle-arrow {
+ background-color: transparentize($fg_color, 0.9);
+ padding: 8px;
+
+ &:ltr { border-radius: 0 99px 99px 0; }
+ &:rtl { border-radius: 99px 0 0 99px; }
+ }
}
.quick-toggle-menu {
-/* exported QuickToggle, QuickSettingsMenu, SystemIndicator */
+/* exported QuickToggle, QuickMenuToggle, QuickSettingsMenu, SystemIndicator */
const {Atk, Clutter, Gio, GLib, GObject, Graphene, Pango, St} = imports.gi;
const Main = imports.ui.main;
}
});
+var QuickMenuToggle = GObject.registerClass({
+ Properties: {
+ 'menu-enabled': GObject.ParamSpec.boolean(
+ 'menu-enabled', '', '',
+ GObject.ParamFlags.READWRITE,
+ true),
+ },
+}, class QuickMenuToggle extends QuickToggle {
+ _init(params) {
+ super._init({
+ ...params,
+ hasMenu: true,
+ });
+
+ this.add_style_class_name('quick-menu-toggle');
+
+ this._menuButton = new St.Button({
+ child: new St.Icon({
+ style_class: 'quick-toggle-arrow',
+ icon_name: 'go-next-symbolic',
+ }),
+ x_expand: false,
+ y_expand: true,
+ });
+ this._box.add_child(this._menuButton);
+
+ this.bind_property('menu-enabled',
+ this._menuButton, 'visible',
+ GObject.BindingFlags.DEFAULT);
+ this._menuButton.connect('clicked', () => this.menu.open());
+ this.connect('popup-menu', () => {
+ if (this.menuEnabled)
+ this.menu.open();
+ });
+ }
+});
+
class QuickToggleMenu extends PopupMenu.PopupMenuBase {
constructor(sourceActor) {
super(sourceActor, 'quick-toggle-menu');